<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>vue-router</title>
    <!--1.引入相关的库文件-->
    <script src="../lib/vue_2.5.22.js"></script>
    <script src="../lib/vue-router_3.0.2.js"></script>
</head>
<body>


<!-- 被vm实例所控制的区域-->
<div id="app">

    <div>pmsg = {{pmsg}}</div>


    <!-- 1.menu-item在app中嵌套着, 故menu-item为子组件-->
    <!--   给子组件传入一个静态的值-->
    <menu-item title='来自父组件的值.....'></menu-item>
    <br>

    <!-- 2.需要动态的数据时候 需要属性绑定的形式设置  :title -> 属性绑定的形式
        此时 pmsg 来自父组件data中的数据, 传的值可以是数据, 对象, 数组等等
    -->
    <menu-item :title='pmsg'></menu-item>
    <br>
    <menu-item :title='ptitle' content="hello"></menu-item>
    <menu-item :content='pcontent' :title="ptitle"></menu-item>


    <hr>
    <!-- 父组件向子组件传值 props属性名类型-->
    <button-item :button-props="pcontent" :parr="parr" :pbool="true" :pnum="12" :pobj="pObj" :pstr="pstr"></button-item>
</div>

<script>


    /**
     * 父组件向子组件传值 是以属性的形式绑定值到子组件身上
     * 然后子组件用属性props接收
     * todo  在props中使用驼峰形式
     */


    Vue.component('menu-item', {

        /**
         * 子组件用属性props接收父组件传递过来的数据
         */
        props: ['title', 'content'],
        data: function () {
            return {
                msg: '子组件本身的数据'
            }
        },
        template: `<div>
            <h2>{{msg + "------" + title + "----        content " + content  }}</h2>
        </div>`
    });

    Vue.component('button-item', {
        /**
         * 子组件用属性props接收父组件传递过来的数据
         */
        props: ['buttonProps', 'pstr', 'pnum', 'pbool', 'parr', 'pobj'],
        data: function () {
            return {
                msg: 'buttonItem子组件本身的数据'
            }
        },
        template: `<div>
            <h2>{{msg + "------" + buttonProps}}</h2>
            <div>pstr = {{pstr}}</div>
            <div>pnum = {{pnum + 12}} type = {{typeof pnum}}</div>
            <div>pbool = {{pbool}} type = {{typeof pbool}}</div>

            <ul>
            <li :key='i' v-for="(item, i) in parr">
                 <div>{{item}}</div>
            </li>
            </ul>
            <hr>
            <span>{{pobj}}</span>

        </div>`
    });


    let vue = new Vue({
        // 指定控制的区域
        el: "#app",
        data: {
            pmsg: '父组件中内容',
            ptitle: '动态绑定属性',
            pcontent: 'Hliushi',
            pstr: "你好, 世界!",
            parr: ['apple', 'orange', 'banana'],
            pObj: {
                name: 'lisi',
                age: 12,
                sex: "男"
            }
        }
    });

</script>


</body>
</html>